文字列変数を zip ファイルに保存するには、次のいずれかのメソッドを使用します。
- C1ZipEntryCollection.OpenWriter メソッド
OpenWriter メソッドを使用して、ストリームライタを取得し、それに文字列を書き込み、最後に閉じます。データは、ストリームへの書き込み時に圧縮されます。ストリームを閉じると、ストリーム全体が zip ファイルに保存されます。
- MemoryStream メソッド
MemoryStream メソッドを使用して、ストリームにデータを書き込み、zip ファイルに追加します。このメソッドでは、OpenWriter メソッドを使用する場合より少し多くの作業を行う必要があります。それでも、これは扱いやすいメソッドです。
次のコードは、両方のメソッドを示しています。この例では、OpenWriter メソッドのコードは button1_Click イベント内に示されます。MemoryStream メソッドのコードは button2_Click イベント内に示されます。
C# コードの書き方
C# |
コードのコピー
|
private void button1_Click(object sender, RoutedEventArgs e) { SaveFileDialog dlgSaveFile = new SaveFileDialog(); dlgSaveFile.Filter = "Zip Files (*.zip) | *.zip"; if (dlgSaveFile.ShowDialog() == true) { zipFile.Create(dlgSaveFile.OpenFile()); } // 方法1:OpenWriter を使用する。 Stream stream = zipFile.Entries.OpenWriter("Shakespeare.txt", true); C1ZStreamWriter sw = new C1ZStreamWriter(stream); byte[] text = System.Text.Encoding.Unicode.GetBytes(shakespeareText); sw.Write(text, 0, text.Length); sw.Flush(); stream.Close(); } private void button2_Click(object sender, RoutedEventArgs e) { SaveFileDialog dlgSaveFile = new SaveFileDialog(); dlgSaveFile.Filter = "Zip Files (*.zip) | *.zip"; if (dlgSaveFile.ShowDialog() == true) { zipFile.Create(dlgSaveFile.OpenFile()); } // 方法2:メモリストリームを使用する。 Stream stream = new MemoryStream(); C1ZStreamWriter sw = new C1ZStreamWriter(stream); byte[] text = System.Text.Encoding.Unicode.GetBytes(shakespeareText); sw.Write(text, 0, text.Length); sw.Flush(); stream.Position = 0; zipFile.Entries.Add(stream, "Shakespeare2.txt"); stream.Close(); }
|
関連トピック